请求和响应对象

在Express.js中,请求和响应对象是处理HTTP请求的核心。理解这两个对象的工作原理对于构建高效的Web应用程序至关重要。本教程将详细介绍请求和响应对象的概念、属性和方法,并通过代码示例和实践练习帮助你掌握它们的使用。

1. 请求对象 (req)

请求对象 (req) 代表了客户端向服务器发送的HTTP请求。它包含了请求的所有信息,如请求头、请求体、查询参数等。

1.1 常用属性

  • req.params: 获取路由参数。
  • req.query: 获取查询字符串参数。
  • req.body: 获取请求体中的数据(需要使用中间件如 body-parser)。
  • req.headers: 获取请求头信息。
  • req.method: 获取请求方法(如 GET, POST 等)。
  • req.url: 获取请求的URL路径。

1.2 代码示例

app.get('/user/:id', (req, res) => {
    const userId = req.params.id;
    const queryParams = req.query;
    console.log(`User ID: ${userId}`);
    console.log(`Query Params:`, queryParams);
    res.send(`User ID: ${userId}`);
});

1.3 实践练习

创建一个Express应用,定义一个路由 /profile/:username,通过 req.params 获取 username,并通过 req.query 获取用户的 age 和 location。将这些信息返回给客户端。

2. 响应对象 (res)

响应对象 (res) 代表了服务器向客户端发送的HTTP响应。它包含了响应的所有信息,如状态码、响应头、响应体等。

2.1 常用方法

  • res.send(): 发送响应体,自动设置Content-Type。
  • res.json(): 发送JSON响应。
  • res.status(): 设置响应状态码。
  • res.set(): 设置响应头。
  • res.redirect(): 重定向到另一个URL。

2.2 代码示例

app.get('/data', (req, res) => {
    const data = { message: 'Hello, World!' };
    res.status(200).json(data);
});

2.3 实践练习

创建一个Express应用,定义一个路由 /api/users,返回一个包含多个用户信息的JSON数组。使用 res.status() 设置状态码为 200,并使用 res.json() 发送响应。

3. 请求和响应对象的综合使用

在实际开发中,请求和响应对象通常会一起使用,以处理复杂的业务逻辑。

3.1 代码示例

app.post('/login', (req, res) => {
    const { username, password } = req.body;
    if (username === 'admin' && password === 'secret') {
        res.status(200).send('Login successful');
    } else {
        res.status(401).send('Invalid credentials');
    }
});

3.2 实践练习

创建一个Express应用,定义一个路由 /register,通过 req.body 获取用户的注册信息(如 username, email, password)。如果所有信息都有效,返回状态码 201 和一条成功消息;否则,返回状态码 400 和一条错误消息。

4. 总结

请求和响应对象是Express.js中处理HTTP请求和响应的核心。通过本教程,你应该已经掌握了如何使用这些对象来获取请求信息和发送响应。在实际开发中,灵活运用这些对象将帮助你构建出功能强大的Web应用程序。

5. 下一步

接下来,你可以继续学习Express.js的其他高级主题,如中间件、路由进阶、静态文件服务等。这些知识将帮助你进一步提升你的Web开发技能。


通过本教程,你已经掌握了Express.js中请求和响应对象的基本使用方法。希望你能继续深入学习,并在实际项目中应用这些知识。祝你编程愉快!